home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 145
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin
/
games
/
spassion
/
knowhow.lzh
/
ノウハウ
/
kani.bas
< prev
next >
Wrap
BASIC Source File
|
1993-11-10
|
8KB
|
320 lines
int i,ii
int sp_n
int xx,yy
int x=136,y=136
int ax
int ay=16 /*ホンタイジョウゲウンドウヨウ
int kan_x(3),kan_y(3)
int kan_flag(3)
char qtoc(256)
int hd32(256)
int atan_table(256)
int gro_ang
int k1_table(1024)
int k2_table(1024)
int cx16(256),cy16(256)
int cx8(256) ,cy8(256)
int cx_wark(256) ,cy_wark(256)
float cx(256) ,cy(256)
char pcm53(10000)
int pcm53_long
int kan_len /*1カンセツアタリノspriteスウ
int kan_suu /*カンセツスウ
int kan_max /*カンセツノゼンチョウドットスウ
int wark_chk_1 /*アルキショリノ カイシゲンカイテン1
int wark_chk_2 /*アルキショリノ カイシゲンカイテン2
int len_temp
int wark_len /*ホハバ
str temp
float fx,fy
/*
/*################[ しょきせってい ]##########################
/*
cls:screen 0,2,1,1:sp_disp(1):sp_on()
for i=0 to 127:sp_set(i,0,0):next
/*
kan_suu=input2("カンセツスウ",3)
kan_len=input2("1カンセツノスプライトスウ",2)
kan_max=kan_suu*kan_len*16
wark_chk_1=kan_max*7/8
wark_chk_2=kan_max*1/3
print"wark_chk_1";wark_chk_1
print"wark_chk_2";wark_chk_2
wark_len=input2("ホハバ",kan_max/9)
/*
/*
/*-------------[ アークタンジェント テ-ブル make ]----------------------
for i=0 to 63
fx=abs(i-32):fy=-32
if fx<>0 then {
atan_table(i) = 65536/cos( atan(fx/fy) )
} else {
atan_table(i)=65536
}
next
/*
/*
/*#################[ FILE ]###############################
/*
i=chk_open("cir\cx256","r")
fread(cx,256,i)
i=chk_open("cir\cy256","r")
fread(cy,256,i)
i=chk_open("cir\HD32","r")
fread(hd32,256,i)
i=chk_open("cir\qtoc","r")
fread(qtoc,256,i)
/*
temp="_"+itoa(kan_suu)+"_"+itoa(kan_len*16)
i=chk_open("cir\k1"+temp,"r")
fread(k1_table,256,i)
i=chk_open("cir\k2"+temp,"r")
fread(k2_table,256,i)
i=chk_open("pcmdata\fpcm53.pcm","r")
ii=fgetc(i)shl 8:pcm53_long=ii
fread(pcm53,ii,i)
fcloseall()
/*
for i=0 to 256
cx16(i)=cx(i)*16*65536
cy16(i)=cy(i)*16*65536
cx8(i) =cx(i)*8*65536
cy8(i) =cy(i)*8*65536
cx_wark(i)=cx(i)*wark_len
cy_wark(i)=cy(i)*wark_len
next
/*##################[ ざひょうしょきか ]######################
/*----------[ アシヲ マバラニ ハイチスル ]---------------
/*
i=(wark_chk_1-wark_chk_2)/2+wark_chk_2
kan_x(0)=x+i :kan_y(0)=y+32
kan_x(1)=x+wark_chk_1:kan_y(1)=y+32
kan_x(2)=x-i-wark_chk_2/4:kan_y(2)=y+32
kan_x(3)=x-wark_chk_1-wark_chk_2/4:kan_y(3)=y+32
/*
/*##################[ MAIN ]##############################
color 5
print"joy_stickデイドウ"
print"ナナメヲオスト speed_up"
print"ボタンデ スローガカカリマス"
print "キーヲオストシュウリョウデス"
color 7
/*
while inkey$(0)=""
/*
vwait2(strig(1)shl 1)
i=stick(1)
ax=0
if i=9 then ax=3
if i=3 then ax=2
if i=6 then ax=1
if i=7 then ax=-3
if i=1 then ax=-2
if i=4 then ax=-1
x=x+ax
y=y+(ay/8)
ay=ay+sgn(136-y)
sp_set(0,x and 511,y and 511,&H128,3)
sp_n=sp_n+1
/*========================[ ミギアシ ]===============
for i=0 to 1
xx=kan_x(i)
yy=kan_y(i)
ii=kan_flag(i)
kan_put(x,y,xx,yy,0)
len_temp=abs(x-xx)
/*------------[ ヒダリヘススム ]--------------
if ii=0 and len_temp>wark_chk_1 then ii=-(128+16)
if ii<0 then {
if ii=-(128+16) then a_end():a_play(pcm53,4,3,pcm53_long)
ii=ii+16
xx=xx-cx_wark(-ii)
yy=yy-cy_wark(-ii)
}
/*------------[ ミギヘススム ]--------------
if ii=0 and len_temp<wark_chk_2 then ii=128+16
if ii>0 then {
if ii=128+16 then a_end():a_play(pcm53,4,3,pcm53_long)
ii=ii-16
xx=xx+cx_wark(ii)
yy=yy-cy_wark(ii)
}
kan_x(i)=xx
kan_y(i)=yy
kan_flag(i)=ii
next
/*========================[ ヒダリアシ ]===============
for i=2 to 3
xx=kan_x(i)
yy=kan_y(i)
ii=kan_flag(i)
kan_put(x,y,xx,yy,1)
len_temp=abs(x-xx)
/*------------[ ミギヘススム ]--------------
if ii=0 and len_temp>wark_chk_1 then ii=128+16
if ii>0 then {
if ii=128+16 then a_end():a_play(pcm53,4,3,pcm53_long)
ii=ii-16
xx=xx+cx_wark(ii)
yy=yy-cy_wark(ii)
}
/*------------[ ヒダリヘススム ]--------------
if ii=0 and len_temp<wark_chk_2 then ii=-(128+16)
if ii<0 then {
if ii=-(128+16) then a_end():a_play(pcm53,4,3,pcm53_long)
ii=ii+16
xx=xx-cx_wark(-ii)
yy=yy-cy_wark(-ii)
}
kan_x(i)=xx
kan_y(i)=yy
kan_flag(i)=ii
next
/*=======================================
sp_n=0
endwhile
end
/*
/*
/*
/*
/*############################################################
/*#
/*# かんせつひょうじ
/*#
/*# kan_put(ツケネ_x,ツケネ_y,センタン_x,センタン_y,ミギマワリ(=0)or ヒダリマワリ(=1)
/*# モドリチ = ツケネカラ センタンマデノ キョリ
/*############################################################
func kan_put(sx,sy,ex,ey,spin)
int ang_main
int ang,ang_h
int i,j,k
/*----------------------------------------
i=length(ex-sx,ey-sy)
if i>kan_max then i=kan_max
ang_main=gro_ang
sx=sx shl 16
sy=sy shl 16
/*:::::::::::::::::::::::::::::
switch spin
case 0
ang=((ang_main shl 16)+k2_table(i)) and &hffffff
ang_add=k1_table(i)
break
default
ang=((ang_main shl 16)-k2_table(i)) and &hffffff
ang_add=-k1_table(i)
break
endswitch
/*-----------------------------
for j=1 to kan_suu
ang_h=(ang shr 16)and 255
/*-----------------------------
for k=1 to kan_len
sx=sx+cx16(ang_h):sy=sy+cy16(ang_h)
sp_set(sp_n,((sx-cx8(ang_h))shr 16)and 511,((sy-cy8(ang_h))shr 16)and 511,&H635+hd32(ang_h),3)
sp_n=sp_n+1
next
/*-----------------------------
ang=ang+ang_add
next
/*:::::::::::::::::::::::::::::
return(i)
endfunc
/*
/*
/*#######################################################
/*
/* キョリ けいさん & かくどけいさん
/*
/* length(ex-sx,ey-sy)
/*.......................................................
/* char qtoc(255)ニ、qtoc ヲ、LOADシテオクコト。
/* モドリチ1 = キョリ
/* モドリチ2 = gro_ang(グローバル)ニ、(ex,ey)カラミタ(sx,sy)ノクド
/*=======================================================
func length(x,y)
int l,abs_x,abs_y
/*
if x=0 then x=1
if y=0 then y=1
if x>0 then abs_x=x else abs_x=-x
if y>0 then abs_y=y else abs_y=-y
if abs_x>abs_y then {
if x>0 then {
if y>0 then {
gro_ang=&h40 + ((y shl 5)+(abs_x shr 1))/abs_x
} else {
gro_ang=&h40 + ((y shl 5)-(abs_x shr 1))/abs_x
}
} else {
if y>0 then {
gro_ang=&hC0 - ((y shl 5)+(abs_x shr 1))/abs_x
} else {
gro_ang=&hC0 - ((y shl 5)-(abs_x shr 1))/abs_x
}
}
l=abs_x*atan_table(gro_ang+32 and 63) shr 16
} else {
if y>0 then {
if x>0 then {
gro_ang=&h80 - ((x shl 5)+(abs_y shr 1))/abs_y
} else {
gro_ang=&h80 - ((x shl 5)-(abs_y shr 1))/abs_y
}
} else {
if x>0 then {
gro_ang= ((x shl 5)+(abs_y shr 1))/abs_y
} else {
gro_ang= ((x shl 5)-(abs_y shr 1))/abs_y
}
}
l=abs_y*atan_table(gro_ang+32 and 63) shr 16
}
/*ーーーーーーーーーーーーーーーーー
gro_ang=qtoc(gro_ang)
return(l)
endfunc
/*
/*
/*##########################################################/*
/* CHK_OPEN /*
/* chk_open( "filename","モード" ) /*
/* モードは、fopen と同じ。
/*----------------------------------------------------------/*
func chk_open(fname;str,mode;str)
int fn
/*::::::::::::::::
error off
fn=fopen(fname,mode)
error on
if fn<0 then {
width 96
color 7:beep
print fname;" が、OPENできません。"
print
print "強制終了します。( HIT ANY KEY )"
while strig(1)<>0 or strig(2)<>0 or inkey$(0)<>"":endwhile
while strig(1)=0 and strig(2)=0 and inkey$(0)="" :endwhile
end
}
return(fn)
endfunc
/*
/*
/*#######################################################
/*
/* INPUT2
/*
/* input("メッセージ",デフォルトチ)
/* モドリチ = ニュウリョクチ
/*-------------------------------------------------------
func input2(mes;str,def)
int i
/*
print mes;"( デフォルト =";def;" )"
input i
if i=0 then i=def
return(i)
endfunc